package mylab.usm.api.model.account;

import mylab.base.model.LongIdName;
import mylab.usm.api.model.authorization.DataPermission;

import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * 系统用户
 */
public interface User extends LongIdName {

    default String getUsername() {
        return null;
    }

    default String getPassword() {
        return null;
    }

    /**
     * 账号是否启用
     *
     * @return 账号启用状态
     */
    default boolean getEnabled() {
        return true;
    }

    /**
     * 账号未过期
     *
     * @return 账号未过期
     */
    default boolean accountNonExpired() {
        return true;
    }

    /**
     * 账号未锁定
     *
     * @return 账号未锁定
     */
    default boolean accountNonLocked() {
        return true;
    }

    /**
     * 证书未过期
     *
     * @return 证书未过期
     */
    default boolean credentialsNonExpired() {
        return true;
    }


    /**
     * 用户同时兼职的所有部门
     */
    default List<Long> getDepartmentList() {
        return Collections.emptyList();
    }

    /**
     * 用户同时兼职的所有部门及其下属部门
     */
    default List<Long> getNestedDepartmentList() {
        return Collections.emptyList();
    }


    /**
     * 该用户的所有数据权限
     * key   -- mappedStatementId
     * value -- DataPermissionInfo
     */
    default Map<String, DataPermission> getDataPermissionMap() {
        return Collections.emptyMap();
    }

}
